<!DOCTYPE html>
<html lang="fr" >
<head>
    <title>Atomsk - Format XYZ - Pierre Hirel</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" media="screen" type="text/css" title="Default" href="./default.css" />
    <link rel="icon" href="../img/atomsk_logo.png" type="image/png" />
</head>
   
<body>

<p><a href="./index.html">Retour au menu principal</a></p>

<h2>Format : XYZ</h2>

<p><strong>Nom :</strong> fichier de positions atomiques XYZ</p>

<p><strong>Extension :</strong> xyz</p>

<p><strong>Spécification:</strong> informelle</p>

<p><strong>Programmes de visualisation :</strong> <a href="http://www.projectaten.com/">Aten</a>, <a href="http://phjoan5.technion.ac.il/~aviz/">AViz</a>, <a href="http://gdis.sourceforge.net/">gdis</a>, <a href="http://jmol.sourceforge.net/">Jmol</a>, <a href="http://ovito.org">OVITO</a>, <a href="http://jp-minerals.org/vesta/">VESTA</a>, <a href="http://www.ks.uiuc.edu/Research/vmd/">VMD</a>, <a href="http://www.hpc.unm.edu/~chem/xmol/xmol.html">XMol</a></p>


<h4>Restrictions</h4>

<p>Le format XYZ, bien que largement utilisé par de nombreux programmes, n'a jamais été formellement décrit ni publié. Il s'agit d'un fichier texte contenant le nombre d'atomes, une ligne de commentaire, suivi des positions des atomes au format '<code>espèce x y z</code>' :</p>

<div class="txtfile"><h5>exemple.xyz</h5>
<p><code>&#60;NP&#62;<br/>
         commentaire<br/>
         &#60;atom1&#62; &#60;x1&#62; &#60;y1&#62; &#60;z1&#62;<br/>
         &#60;atom2&#62; &#60;x2&#62; &#60;y2&#62; &#60;z2&#62;<br/>
         ...   ...  ...<br/>
         &#60;atomN&#62; &#60;xN&#62; &#60;yN&#62; &#60;zN&#62;<br/>
</code></p></div>

<p>Puisqu'aucune spécification standard n'existe, certains programmes utilisent le numéro atomique dans la première colonne, tandis que d'autres utilisent le symbole ; et les positions x, y, z sont parfois écrites dans une base cartésiennes, et parfois en coordonnées réduites, selon la périodicité du système (les coordonnées cartésiennes sont souvent utilisées pour des molécules isolées, tandis que les coordonnées réduites sont souvent plus pratiques pour les structures périodiques). De plus, les vecteurs de boîte ne sont pas définis dans le format XYZ par défaut.</p>
 
<p>Lorsqu'il lit un fichier XYZ, Atomsk détecte automatiquement si c'est le symbole chimique ou le numéro atomique qui apparaît dans la première colonne, et il détecte aussi si les coordonnées sont cartésiennes ou réduites. Puisqu'aucun vecteur de boîte n'est défini dans le format XYZ par défaut, Atomsk en crée automatiquement (ceci est équivalent à l'<a href="./option_rebox.html">option <code>-rebox</code></a>) pour assurer la compatibilité avec les formats de fichiers qui requièrent une boîte. Il est également possiblle de définir les vecteurs de boîte manuellement grâce à l'<a href="./option_properties.html">option <code>-properties</code></a>.</p>

<p>Lorsqu'il écrit un fichier au format XYZ par défaut, Atomsk utilise les spécifications publiées dans le <a href="http://openbabel.org/wiki/XYZ_%28format%29">Wiki d'OpenBabel</a>, c'est-à-dire que la première colonne contient le symbole atomique et les positions sont en coordonnées cartésiennes.</p>

<p>Atomsk peut aussi lire et écrire le <strong>format XYZ étendu</strong>, décrit par exemple <a href="http://libatoms.github.io/QUIP/io.html#module-ase.io.extxyz">ici</a> ou <a href="https://camtools.cam.ac.uk/access/wiki/site/5b59f819-0806-4a4d-0046-bcad6b9ac70f/extendedxyz.html">ici</a>. Ce format étendu est pleinement compatible avec le format XYZ par défaut, la principale différence étant que la seconde ligne, au lieu de contenir un commentaire, est utilisée pour enregistrer les vecteurs de boîte et des jeux de mots-clés et valeurs, par exemple :</p>

<div class="txtfile"><h5>exemple.xyz</h5>
<p><code>&#60;NP&#62;<br/>
         Lattice="H11 H21 H31 H12 H22 H32 H13 H23 H33" Properties=species:S:1:pos:R:3:aux1:R:1:aux2:R:2...auxM:R:2 Time=0.0
<br/>
         &#60;atom1&#62; &#60;x1&#62; &#60;y1&#62; &#60;z1&#62; &#60;aux11&#62; &#60;aux12&#62; ... &#60;aux1M&#62;<br/>
         &#60;atom2&#62; &#60;x2&#62; &#60;y2&#62; &#60;z2&#62; &#60;aux21&#62; &#60;aux22&#62; ... &#60;aux2M&#62;<br/>
         ...   ...  ...<br/>
         &#60;atomN&#62; &#60;xN&#62; &#60;yN&#62; &#60;zN&#62; &#60;auxN1&#62;  &#60;auxN2&#62; ... &#60;auxNM&#62;<br/>
</code></p></div>

<p>Le mot-clé "<code>Properties</code>" définit le format de chaque ligne par un jeu de trois valeurs : le nom de la propriété, son format (S=chaîne dde caractères, I=entier, R=réel), et le nombre de colonnes utilisées par cette propriété. Par exemple "<code>species:S:1:pos:R:3</code>" signifie que l'espèce atomique est décrite par une chaîne de caractères utilisant une colonne, et les positions atomiques par des nombres réels répartis dans trois colonnes.</p>

<p>Lorsqu'il lit un fichier XYZ étendu, Atomsk lit les vecteurs de boîte suivant le mot-clé <code>Lattice</code>, et les propriétés auxiliaires (suivant le mot-clé <code>Properties</code>). Tout autre mot-clé (comme le mot "<code>Time</code>" dans l'exemple ci-dessus) est ignoré.</p>

<p>Lorsqu'il écrit un fichier au format XYZ étendu, Atomsk écrit toujours les vecteurs de boîte (après le mot-clé "<code>Lattice</code>") et les propriétés auxiliaires (après le mot-clé "<code>Properties</code>"). Chaque propriété auxiliaire a des valeurs réelles contenues dans une seule colonne, de sorte que le format ressemble à : "<code>Properties=species:S:1:pos:R:3:aux1:R:1:aux2:R:1...</code>". Pour écrire un fichier au format XYZ étendu il faut utiliser <code>exyz</code> comme option en ligne de commande, par exemple :</p>

<p><code class="command">atomsk initial.cfg final.xyz exyz</code></p>

<p>Enfin, Atomsk peut traiter une autre variante appelée ici le <strong>format XZ spécial</strong>. Ce format supporte les propriétés auxiliaires, mais réserve la seconde ligne pour un commentaire. Les propriétés additionnelles se trouvent en fin de fichier : un facteur d'échelle (après le mot-clé "alat"), les vecteurs de boîte (après "supercell" ou "conventional"), les masses des atomes (une ligne par type d'atome), un mot-clé spécifiant si les positions sont en coordonnées cartésiennes ou réduites, et le nom de chaque propriété auxiliaire (s'il y en a) :</p>

<div class="txtfile"><h5>exemple.xyz</h5>
<p><code>&#60;NP&#62;<br/>
         commentaire<br/>
         &#60;atom1&#62; &#60;x1&#62; &#60;y1&#62; &#60;z1&#62; &#60;aux11&#62; &#60;aux12&#62; ... &#60;aux1M&#62;<br/>
         &#60;atom2&#62; &#60;x2&#62; &#60;y2&#62; &#60;z2&#62; &#60;aux21&#62; &#60;aux22&#62; ... &#60;aux2M&#62;<br/>
         ...   ...  ...<br/>
         &#60;atomN&#62; &#60;xN&#62; &#60;yN&#62; &#60;zN&#62; &#60;auxN1&#62; &#60;auxN2&#62; ... &#60;auxNM&#62;<br/>
         alat<br/>
         &#60;a0&#62; <br/>
         supercell <br/>
         &#60;H(1,1)&#62; &#60;H(1,2)&#62; &#60;H(1,3)&#62; <br/>
         &#60;H(2,1)&#62; &#60;H(2,2)&#62; &#60;H(2,3)&#62; <br/>
         &#60;H(3,1)&#62; &#60;H(3,2)&#62; &#60;H(3,3)&#62; <br/>
         mass &#60;species1&#62; &#60;mass1&#62; <br/>
         mass &#60;species2&#62; &#60;mass2&#62; <br/>
         ... <br/>
         mass &#60;speciesN&#62; &#60;massN&#62; <br/>
         property 1 &#60;name1&#62;<br/>
         property 2 &#60;name2&#62;<br/>
         ... <br/>
         property M &#60;nameM&#62;<br/>
         &#60;cartesian/reduced&#62; coordinates <br/>
</code></p></div>

<p>Les vecteurs de boîte peuvent être spécifiés comme vecteurs après le mot-clé "supercell" (comme dans l'exemmple ci-dessus), ou bien en notation conventionnelle après le mot-clé "conventional" (une ligne pour les paramètres "<code>a b c</code>", et une seconde ligne pour les angles "<code>&alpha; &beta; &gamma;</code>"). Si des propriétés auxiliaires sont présentes, elles doivent apparaître sur chaque ligne après les positions atomiques (les propriétés auxiliaires peuvent seulement être des nombres entiers ou réels), et chacune doit avoir son nom défini par une ligne "<code>property &#60;i&#62; &#60;nom&#62;</code>" en fin d fichier, &#60;i&#62; étant le numéro de la propriété auxiliaire et &#60;nom&#62; son nom. La ligne "<code>cartesian coordinates</code>" (ou "<code>reduced coordinates</code>") signifie que les positions sont en coordonnées cartésiennes (respectivement, en coordonnées réduites).</p>

<p>Pour écrire un fichier au format XYZ spécial, il faut utilser <code>sxyz</code> comme option dans la ligne de commande, par ex.:</p>

<p><code class="command">atomsk initial.cfg final.xyz sxyz</code></p>

<p>Par défaut Atomsk écrit toujours les positions en coordonnées cartésiennes dans tous les formats XYZ décrits ci-dessus. Il est possible d'écrire des coordonnées réduites en utilisant l'<a href="./option_fractional.html">option <code>-fractional</code></a>.</p>

<p>Les fichiers au format XYZ par défaut (ou XYZ étendu) qui contiennent plusieurs configurations peuvent être lus grâce au <a href="./mode_oneinall.html">mode one-in-all</a>, ou être générés grâce au <a href="./mode_allinone.html">mode all-in-one</a>. De tels fichiers peuvent aussi être lus et animés par certains programmes de visualisation comme <a href="http://gdis.sourceforge.net/">gdis</a>.</p>



<h4>Exemples</h4>

<ul>
<li><code class="command">atomsk systeme.xsf xyz</code>
<p>Ceci va lire le fichier <code>systeme.xsf</code>, et le convertira en <code>systeme.xyz</code> au format XYZ normal.</p></li>

<li><code class="command">atomsk systeme.xsf exyz</code>
<p>Ceci va lire le fichier <code>systeme.xsf</code>, et le convertira en <code>systeme.xyz</code> au format XYZ étendu.</p></li>

<li><code class="command">atomsk systeme.xsf sxyz</code>
<p>Ceci va lire le fichier <code>systeme.xsf</code>, et le convertira en <code>systeme.xyz</code> au format XYZ spécial.</p></li>

<li><code class="command">atomsk initial.xsf -frac final.xyz exyz</code>
<p>Ceci va lire le fichier <code>initial.xsf</code>, convertira les positions des atomes en <a href="./option_fractional.html">coordonnées réduites</a>, et écrira le résultat final dans <code>final.xyz</code> au format XYZ étendu.</p></li>

<li><code class="command">atomsk --all-in-one mesfichiers.lst animation.xyz</code>
<p>Ceci va lire les fichiers apparaissant dans la liste <code>mesfichiers.lst</code>, et écrira toutes les configurations dans le fichier <code>animation.xyz</code>.</p></li>

<li><code class="command">atomsk --one-in-all animation.xyz cfg</code>
<p>Ceci va lire le fichier <code>animation.xyz</code>, et écrira chaque configuration dans un fichier séparé au format CFG : <code>animation_1.cfg</code>, <code>animation_2.cfg</code>, etc.</p></li>
</ul>

<p><a href="./index.html">Retour au menu principal</a></p>

</body>

</html>
